home *** CD-ROM | disk | FTP | other *** search
- Installation of Svgalib v1.2.12 or higher.
-
- Table of contents:
- 0. Introduction
- 1. Directories
- 2. Installation
- 3. SVGALib port to ALPHA AXP hardware
-
- 0. Introduction
- This is a low level graphics library for Linux, based on VGAlib 1.2 by
- Tommy Frandsen. VGAlib supported a number of standard VGA graphics
- modes, as well as Tseng ET4000 high resolution 256-color modes.
- Nowadays support for even more hardware is given. For details on
- supported chipsets, see the file 0-README which is equal to man 7
- svgalib (when svgalib is installed).
-
- It supports transparent virtual console switching, that is, you can
- switch consoles to and from text and graphics mode consoles using
- alt-[function key]. Also, svgalib corrects most of VGAlib's textmode
- corruption behaviour by catching SIGSEGV, SIGFPE and SIGILL, and
- ensuring that a program is running in the currently visible virtual
- console before setting a graphics mode. Svgalib uses SIGUSR1 and SIGUSR2
- internally to do so.
-
- When the library is first used by a program at run-time, the chipset is
- detected and the appropriate driver is used. This means that a graphics
- program will work on any card that is supported by svgalib, if the mode
- it uses is supported by the chipset driver for that card. The library
- is upwardly compatible with VGAlib.
-
- The set of drawing functions provided by svgalib itself is limited
- (mostly unchanged from VGAlib) and unoptimized; you can however use
- vga_setpage and graph_mem (which points to the 64K VGA framebuffer) in
- a program or graphics library. A fast external framebuffer graphics
- library for linear and banked 1, 2, 3 and 4 bytes per pixel modes is
- included (it also indirectly supports planar VGA modes). See 'man 7
- vgagl' for details.
-
- One obvious application of the library is a picture viewer. Several are
- available, along with animation viewers. See the references at the end
- of 0-README.
-
- I have added a simple VGA textmode font restoration utility
- (restorefont) which may help if you suffer from XFree86 textmode font
- corruption. It can also be used to change the textmode font. It's in
- the utils/ directory, along with a README and some other textmode
- utilities: restoretextmode (which saves/restores textmode registers),
- restorepalette, and the script textmode. If you run the savetextmode
- script to save textmode information to /tmp, you'll be able to restore
- textmode by running the textmode script.
-
- If you have an ET4000 card, you should read the 0-README in the et4000/
- directory. You will probably want to replace the ET4000 registers.
-
- 1. Directories
- doc/ README's and man pages. See the 0-README in this
- directory for info on how to read these man pages
- without installing svgalib and how to produce nice
- printouts.
- demos/ Demo and test programs.
- utils/ Textmode/font utilities.
- src/ Main library source.
- src/mouse/ Source for mouse interface.
- src/keyboard/ Source for keyboard interface.
- gl/ External framebuffer graphics library sources.
- support/ DOS-based utility for dumping VGA registers.
- et4000/ Notes, utilities and sample registers for ET4000.
- mach32/ Notes and a utility for the ATI mach32 driver.
- jump/ Configuration files for building DLL shared library.
- sharedlib/ Shared library image and stubs.
- threeDKit/ Routines to draw 3-dimensional triangles and
- 3D demos using these.
- lrmi-0.5m/ Linux real mode library (used for VESA driver)
- including a utility for restoring text mode
-
- I welcome any questions, comments, suggestions, bug-reports, etc.
-
- The source code is rather a mess, but there's hope. The new XFree86-style
- driver interface (used by the Cirrus and S3 drivers) and kernel module
- graphics that some are experimenting with should provide some momentum.
-
- Harm Hanemaayer
- hhanemaa@cs.ruu.nl
-
- Current maintainer is
- Matan Ziv-Av <zivav@cs.bgu.ac.il>
-
- 2. Installation
- If yopu have a glibc2 based system (RH5.?. Debian2...) then you
- must edit Makefile.cfg to uncomment the line USEGLIBC=yes.
- If you are happy with the configuration in 'Makefile.cfg' which means
- that you want to install an ELF shared library and probably an a.out
- shared library for support of some old binaries (and if the svgalib tar
- file you got already contains such an precompiled a.out shared library)
- just running
-
- make install
-
- as root should take care of proper installation. After installation,
- you MUST edit /etc/vga/libvga.config to set the monitor and mouse type.
- Depending on your hardware, other setup might be required. Checkout
- 'man 7 svgalib' for details after you installed svgalib (or see
- doc/0-README)
-
- It is a good idea to read and check the configurable section of
- Makefile.cfg nevertheless, even if you don't think you have to. Also,
- if your are using GLIBC you have to uncomment the definition of
- USEGLIBC in Makefile.cfg as glibc is not completely compatible to the
- linux libc (at least at compile time).
-
- Let me rephrase this: YOU MUST COMPILE AND INSTALL AS ROOT.
- If you don't nothing bad will happen during compilation, but certain
- tools won't be able to become SETUID ROOT which is required for
- proper operation.
-
- In case you change anything in 'Makefile.cfg' which does not just control
- which parts to install and where, you *MUST* issue a 'make clean' prior to
- 'make install' to remove any already compiled objects and force complete
- recompilation.
-
- Edit Makefile.cfg to change installation paths and to select the parts
- that should be installed.
-
- If you have an ET4000 card, read 'man 7 svgalib.et4000' and copy the
- appropriate register file to et4000.regs. Remember to set the DAC type.
-
- The default behaviour is the following:
-
- Shared libraries are installed in /lib and /usr/local/lib, header files
- in /usr/local/include (any old header files in /usr/include are
- removed). In the Slackware distribution the linkable libraries are in
- /usr/lib, and the utilities in /usr/bin; these are now removed by 'make
- install'. Until now just doing make install with Slackware might have
- produced duplicate binaries, but fortunately the newer version in
- /usr/local/* would have taken precedence in use.
-
- The et4000 registers (et4000.regs) are installed as
- /etc/vga/libvga.et4000, but only if this file does not exit yet. The
- same goes for the configuration file, libvga.config.
-
- Textmode utilities are installed in /usr/local/bin. These are
- restorefont, runx, restorepalette, dumpreg, restoretextmode, textmode,
- savetextmode, fix132x43, and mode3.
-
- If you change Makefile.cfg to install the static libraries, static
- libraries are compiled, and installed in /usr/local/lib. Note that you
- do not need to do this; the shared library is enough.
-
- If you now run 'make demoprogs', the demo programs are created in the
- demos/ and threeDKit/ directory. If you
-
- You can remove previously installed files (not the et4000 registers and
- config file and manual pages) with 'make uninstall'.
-
- In 1.28 the makefiles were changed. With minimal effort you can compile
- it from a separate (even read-only) source tree. Just make a copy of
- Makefile and Makefile.cfg into a writable dir, and change srcdir (or
- override from environment) to the directory where the source code is.
-
- This feature, as well as the code for ELF compilation was kindly
- contributed by Stephen Lee <sl14@crux1.cit.cornell.edu>.
-
- `make static' compiles a static version of svgalib. It is not
- automatically installed by default but you can enable that from
- Makefile.cfg. Note though, that if you specify installation of the static
- libraries in 'Makefile.cfg' a simple 'make install' will compile the
- static library first.
-
- If you do not configure Makefile.cfg to install the shared libs, the
- demoprogs and utilities are linked against the new static lib
- (regardless of one already installed). However, the static libraries are
- not build automatically then. You must issue a 'make static' first.
-
- Building elf or a.out shared libraries can easily be configured in the
- Makefile.cfg. Be sure to issue a `make clean' after changing the
- TARGET_FORMAT setting.
-
- If you specified elf, `make install' will compile the shared libs as
- they don't come pre-built. This is nothing to worry about. Compilation
- is easy and will not use any user action.
-
- This is not true for a.out and there is a special hack in the makefiles
- for this. As svgalib is distributed there is no attempt to recompile the
- a.out sharedlibs. Prebuild images are already included.
-
- If you have the required tools-* installed and if you made patches (or
- just feel like recompiling) issue a `make clean' and `make shared' to
- enforce recompiling of the a.out sharedlibs (from then on even a make
- install will update the shared library if sources changed). Issue `make
- distclean' after a `make shared' to fall back to the distribution
- behaviour.
-
- However, getting the right tools becomes more and more complicated as
- it gets less important to give a.out support. Right now you even have to
- hand patch the last tools-* release to make it usuable with current
- compilers. In general I discourage trying to compile the a.out libs.
- Just use the images that come with svgalib.
-
- 3. SVGALib port to ALPHA AXP hardware
- David Mosberger-Tang <davidm@azstarnet.com> contributed patches to make
- SVGALib run on Linux/Alpha namely APECS-based and low-cost PCI boards.
-
- It is known to run with #9 GXE (but all S3-based graphic cards should
- work if they are supported). He wrote a patch to make SVGALib run on
- Jensen boards. They own EISA slots instead of PCI slots and can not map
- video memory as a continous frame buffer. Use this patch with extreme
- care (do sync disks before starting compiled software for the first
- time!). He also recommends using SVGATextMode in combination with
- SVGALib-based software otherwise the library crunches the font
- (although the system should not crash). Here is a list of what is not
- supported yet:
-
- - vc-switching (due to lack of some signals supported by current ALPHA
- kernels but this could be fixed now [He used a 1.3.28 to test])
- - font restoring without SVGATextMode (He still works on it)
- - clearing screen in mode 320x200x256
- - vgagl (will never be ported by me because he thinks it is too much work
- and useless in the end)
-
- He tested his patch with an ELSA Winner 1000 but it should even work on
- other cards (He recommends to always sync disks, it saves a lot of time
- and sweat :-) ).
-
- If you compile it on a machine where __alpha__ is defined, you should
- have configured your kernel correctly once. This is due to the fact
- that he saw no other possibility to determine the type of ALPHA AXP
- hardware you use. During kernel configuration your are asked which
- architecture you want to compile it for.
-
- Also important: you must have the right libc compiled for your board
- hardware. This is due to the I/O functions in libc. They need to be
- compiled especially for your Alpha board. Have a look at
- ftp.azstarnet.com for precompiled libc's (although this is not very
- reliable, most of the libc-packages are sources).
-
- Note that he feels __not__ responsible for damage to your hardware when
- using this software. If you encounter any problems that refer to
- Jensen-type hardware you can send an email to me:
-
- If you encounter any problems that refer to Jensen-type hardware you
- can send an email to:
- Stephan Kanthak <kanthak@i6.informatik.rwth-aachen.de>
-
- Here are some additional comments Michael Weller wrote on the first
- ALPHA patches from David Mosberger-Tang:
-
- No reports of other hardware working or not exist yet. This is REAL
- ALPHA software. I don't know any installation details. In theory you
- just recompile it out of the box (When you are using Linux/Alpha you
- are a hacker and should be able to create a shared lib w/o problems). I
- don't know any details, in case of problems please contact David.
-
- From what I saw you might have to use static libs. That's no real
- problem, a simple 'make static' will create a static lib.
-
- The background mode is said not to work on Dec-ALPHA, so you better
- disable it in Makefile.cfg
-